package com.abner.design.patterns.builder.improve;

/**
 * 房子指挥者:
 *     构建一个使用 Builder 接口的对象。它主要是用于创建一个复杂的对象。
 *     它主要有两个作用，一是：隔离了客户与对象的生产过程，二是：负责控制产品对象的生产过程。
 * @Author: abner
 * @Date: 2022-05-03-14:21
 **/
public class HouseDirector {

    HouseBuilder houseBuilder = null;

    public HouseDirector(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }

    /**
     * 建造房子
     * @return
     */
    public House constructHouse() {
        houseBuilder.buildBasic();
        houseBuilder.buildWalls();
        houseBuilder.roofed();
        return houseBuilder.buildHouse();
    }
}
